package com.baomidou.ant.weChat.TimeTask;

import com.baomidou.ant.db2.entity.Ygzlw;
import com.baomidou.ant.db2.service.IYgzlwService;
import com.baomidou.ant.entity.SysDept;
import com.baomidou.ant.entity.SysUser;
import com.baomidou.ant.service.ISysDeptService;
import com.baomidou.ant.service.ISysUserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * HR系统定时同步
 */
@Component
public class HrTaskMission {
    @Autowired
    IYgzlwService ygzlwService;
    @Autowired
    ISysUserService userService;
    @Autowired
    ISysDeptService deptService;
    @Value("${dept.DGDept}")
    private String DGDept;
    @Value("${dept.QDDept}")
    private String QDDept;
    @Value("${dept.TXDept}")
    private String TXDept;

    //编写具体的定时任务组件（@Component注解），并且在需要定时调度的方法上添加@Scheduled触发器
    //每隔5秒执行一次：*/5 * * * * ?
    //每隔1分钟执行一次：0 */1 * * * ?
    //每天23点执行一次：0 0 23 * * ?
    //每天凌晨1点执行一次：0 0 1 * * ?
    //每月1号凌晨1点执行一次：0 0 1 1 * ?
    //每月最后一天23点执行一次：0 0 23 L * ?
    //每周星期天凌晨1点实行一次：0 0 1 ? * L
    //在26分、29分、33分执行一次：0 26,29,33 * * * ?
    //每天的0点、13点、18点、21点都执行一次：0 0 0,13,18,21 * * ?
    /**
     * 事业部 每天22点同步hr系统生产人员
     * @throws ParseException
     */
    @Scheduled(cron = "0 0 22 * * ?")
    public void addUserFormHR() throws ParseException {
        //查询电感生产部的
        QueryWrapper<Ygzlw> dgQueryWrapper=new QueryWrapper<>();
        dgQueryWrapper.like("zlname","电感生产");
        List<Ygzlw> dgYgzlwList=ygzlwService.list(dgQueryWrapper);
//        //查询汽电生产部的
//        QueryWrapper<Ygzlw> qdQueryWrapper=new QueryWrapper<>();
//        qdQueryWrapper.like("zlname","汽电生产");
//        List<Ygzlw> qdYgzlwList=ygzlwService.list(qdQueryWrapper);
//        //查询通信生产部的
//        QueryWrapper<Ygzlw> txQueryWrapper=new QueryWrapper<>();
//        txQueryWrapper.like("zlname","通信生产");
//        List<Ygzlw> txYgzlwList=ygzlwService.list(txQueryWrapper);
        //为电感同步用户
        if(dgYgzlwList!=null||dgYgzlwList.size()!=0){
            for(Ygzlw dgYgzl:dgYgzlwList){
                //查询该在职员工是否存在
                SysUser user=userService.queryByLoginName(dgYgzl.getGhid().replace(" ",""));
                if(ObjectUtils.isEmpty(user)){//不存在该员工
                    SysUser newUser=new SysUser();
                    newUser.setStatus(true);
                    newUser.setType("2");
                    newUser.setPassword("123456");
                    newUser.setUserName(dgYgzl.getName().replace(" ",""));
                    newUser.setLoginName(dgYgzl.getGhid().replace(" ",""));
                    newUser.setDeptId(deptService.queryByDeptName(DGDept));
                    userService.save(newUser);
                }else if(ObjectUtils.isNotEmpty(user)|| !user.isStatus()){//如果存在但用户被禁用
                    user.setStatus(true);
                    userService.updateById(user);
                }else
                    continue;
            }
        }
        System.out.println("电感同步完成.....");
        //为汽电同步用户

        //为通信同步用户

    }

    /**
     * 事业部 每天23点清理已离职员工
     * @throws ParseException
     */
//    @Scheduled(cron = "0 0 23 * * ?")
//    public void clearUserFormHR() throws ParseException {
//        List<Ygzlw> ygzlwList=ygzlwService.list();
//        if(ygzlwList!=null||ygzlwList.size()!=0){
//            //得到所有工号
//            List<String> ghidList=new ArrayList<>();
//            for(Ygzlw ygzlw:ygzlwList){
//                ghidList.add(ygzlw.getGhid().replace(" ",""));
//            }
//            //查询在用员工
//            QueryWrapper<SysUser> queryWrapper=new QueryWrapper<>();
//            queryWrapper.eq("status",true);
//            List<SysUser> userList=userService.list(queryWrapper);
//            for(SysUser user:userList){
//                if(Objects.equals(user.getLoginName(), "admin")){
//                    continue;
//                }
//                //如果不在职了，禁用
//                if(ghidList.contains(user.getLoginName())){
//                    continue;
//                }else{
//                    user.setStatus(false);
//                }
//                userService.updateById(user);
//            }
//        }
//        System.out.println("清理完成...");
//    }

}
